package demo08;

import java.util.ArrayList;
import java.util.Random;

import red.OpenMode;

public class RandomMode implements OpenMode { // 手气红包
    @Override // 实现OpenMode接口的分发方法
    public ArrayList<Integer> divide(int totalMoney, int totalCount) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        Random random = new Random(); // 创建Random对象用于调用其生成随机数方法
        int leftMoney = totalMoney; // 设置一个会慢慢变少的剩余金额变量，让总金额不会变动，变动的是剩余金额
        int leftCount = totalCount; // 设置一个会慢慢变少的剩余人数变量，让总人数不会变动，变动的是剩余人数

        for (int i = 0; i < totalCount - 1; i++) { // 前totalCount-1个红包塞入随机的数额
            int rd = 1 + random.nextInt(leftMoney / leftCount * 2); // 设置随机数范围：1 ~ 每人平均金额*2
            // 随机数生成范围是 0 ~ 剩余金额/剩余人数*2-1 ，因此该值最后要+1，达到要求的范围

            arrayList.add(rd); // 随机数放入数组
            leftMoney -= rd; // 剩余金额减少
            leftCount--; // 剩余人数减少
        }
        arrayList.add(leftMoney); // 最后一个红包直接塞入剩余的数额，不需要随机数

        return arrayList;
    }
}
